﻿using Microsoft.Xna.Framework;
using Terraria;
using Terraria.DataStructures;
using Terraria.ID;
using Terraria.ModLoader;

namespace EAMF.Content.Items.Weapon
{
    public class PokeSword : ModItem
    {
        public override void SetDefaults()
        {
            Item.width = 49;
            Item.height = 49;
            Item.useTime = 5;
            Item.useAnimation = 5;
            Item.useStyle = ItemUseStyleID.Thrust;
            Item.autoReuse = true;
            Item.useTurn = true;
            Item.UseSound = SoundID.Item1;
            Item.damage = 20;
            Item.DamageType = DamageClass.Melee;
            Item.knockBack = 6f;
            Item.crit = 20;

            // 这是控制贴图是否造成伤害，默认是造成伤害
            Item.noMelee = false; // 这是一把剑所以贴图是造成伤害的
                                  // 但如果你是枪类的远程武器，你不希望拿着枪敲人的话就要把它设置为true
                                  // 这是控制使用时是否显示贴图，默认是有的
            Item.noUseGraphic = false;
            // 吸血飞刀这个就是true，它使用时不显示贴图
            // 假如这是一个法杖类型，不写默认false，这里就用到物品Type了
            //Item.staff[Type] = false; // enn，这是把剑
            // 一般来说，法杖类武器会使用Shoot的那个使用方式，但它的贴图不像枪一样是水平朝向而是向右上倾斜
            // 让它变成true就会导致使用时贴图再转45度，变成法杖尖端朝着射击方向

            // 这是使用消耗的魔力值，不写就不消耗
            Item.mana = 0;
            Item.shoot = ProjectileID.TerraBeam; //发射原版弹幕的id
            //Item.shoot = modcontent.ProjectileType<你的弹幕类>(); 
            Item.shootSpeed = 16f; //弹幕的速度，指向射击方向
            base.SetDefaults();
        }
        public override void MeleeEffects(Player player, Rectangle hitbox)
        {
            if (Main.GameUpdateCount % 3 == 0)
            {
                //Main.GameUpdateCount是进入游戏就开始计数的计数器,这里使用计数器降低粒子生成的数量        
                //参数1 武器碰撞箱的position坐标，参数2 武器碰撞箱的宽度，参数3 武器碰撞箱的高度，参数4 原版粒子效果id
                Dust d = Dust.NewDustDirect(hitbox.TopLeft(), hitbox.Width, hitbox.Height, DustID.Ichor);
                base.MeleeEffects(player, hitbox);
                d.velocity *= 5; //粒子的初速度,这个会让粒子到处飞,默认也会到处飞
                d.noGravity = true; //粒子是否会受重力影响
            }
        }

        public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback)
        {
            // 这里是重写Shoot方法，主要是为了添加弹幕的效果
            // 这里的type参数是弹幕的id，damage是弹幕的伤害，knockback是弹幕的击退力度
            // 这里的position参数是弹幕的起始位置，velocity参数是弹幕的速度
            // 这里的source参数是弹幕的来源，这里是使用物品的弹幕
            // 这里的player参数是弹幕的发射者，这里是玩家
            type = ProjectileID.Bee;
            velocity *= 1.1f; //弹幕的速度,发射中心指向鼠标位置
            Projectile Cool = Projectile.NewProjectileDirect(source, position, -velocity, type, damage, knockback, player.whoAmI);


            return base.Shoot(player, source, position, velocity, type, damage, knockback);
            //当你 return true 的时候，使用这个物品时，它就会使用你之前设定过的 Item.shoot 和 Item.shootSpeed 发射一个弹幕。
            //但是当你 return false 时，这个自带的发射便会被阻止
        }
        public override void OnSpawn(IEntitySource source)
        {
            base.OnSpawn(source);
        }
    }
}
